10 REM  ******************** 
15 REM   
20 REM  ESCAPE - BASIC GAME   
25 REM   
30 REM  (C)2019 Bleepbit.com 
35 REM   
40 REM  ******************** 
100 CALL CLEAR
110 CALL SCREEN(2)
200 RESTORE 9600
210 READ K,S,C
220 IF K=0 THEN 300
230 CALL COLOR(K,S,C)
240 GOTO 210
300 RESTORE 9000
310 READ CC,A$
330 IF CC=0 THEN 400
340 CALL CHAR(CC,A$)
350 GOTO 310
400 C$(1)="00FFFFFFFFFFFF00"
402 C$(2)="00FFFFFFFFFFFF00"
403 C$(3)="00FFFFFFFFFF0000"
405 C$(4)="00FFFFFFFF000000"
407 C$(5)="00FFFFFF00000000"
408 C$(6)="00FFFF0000000000"
409 C$(7)="00FF000000000000"
410 C$(8)="0000000000000000"
415 CO(1)=5
416 CB(1)=6
417 CO(2)=7
418 CB(2)=10
419 CO(3)=13
420 CB(3)=4
421 CO(4)=11
422 CB(4)=12
500 SO(1)=131
505 SO(2)=116
510 SO(3)=174
515 SO(4)=174
520 SM(1)=1046
525 SM(2)=1244
530 SM(3)=1396
535 SM(4)=1046
540 SM(5)=1244
545 SM(6)=1396
550 SM(7)=1046
555 SM(8)=1244
600 REM   nuova partita  
610 SC=0
620 TX=0.4
630 SK=0
640 TA=2
650 CY=0
651 CALL CLEAR
653 CALL COLOR(9,2,CB(1))
654 CALL COLOR(11,CO(1),2)
670 PRINT "           xyz{|x": : : :"        } S ";CHR$(130);"  ";CHR$(128);" D ~"
680 PRINT "````````````````````````````": :
690 PRINT "        (***";CHR$(144);"  SPACE":"````````````````````````````": :
700 PRINT "        ";CHR$(136);"  10 POINTS":"````````````````````````````": : : :
705 PRINT "       BLEEPBIT +2019": : :"        PRESS  SPACE"
710 A=0
712 B=1
714 CALL KEY(3,K,S)
716 A=A+1
718 IF A<5 THEN 724
720 A=1
722 B=B*-1
724 IF S<>0 THEN 790
726 FOR L=2 TO 23 STEP 3
728 CALL KEY(3,K,S)
730 IF B=1 THEN 736
732 CALL SOUND(-150,SO(A),10,INT(SO(A)*2.02),30-L,SM((L+1)/3),L+6)
734 IF S<>0 THEN 790 ELSE 740
736 CALL SOUND(-150,SO(A),10,INT(SO(A)*2.02),30-L,SO(A)*2,L+6)
738 IF S<>0 THEN 790
740 NEXT L
750 GOTO 714
790 REM   nuovo schermo  
791 CALL CLEAR
800 CC=0
802 SK=SK+1
803 CY=CY+1
804 IF CY<5 THEN 810
805 CY=1
810 X=3
811 CALL COLOR(9,2,CB(CY))
812 CALL COLOR(11,CO(CY),2)
815 CALL CHAR(104,"00FFFFFFFFFFFF00")
820 Y=4
830 X1=1
840 CX=128
850 C1=0
860 TI=230
999 CALL CLEAR
1000 PRINT "ROOM 00  xyz{|x  SCORE 00000                            "
1001 A$=STR$(SK)
1002 K=22
1003 S=9-LEN(A$)
1004 GOSUB 8000
1005 A$=STR$(SC)
1006 K=22
1007 S=30-LEN(A$)
1008 GOSUB 8000
1012 FOR K=1 TO 3
1015 PRINT "                                                        b````````````````````````apc"
1020 PRINT "                                                        cpb````````````````````````a"
1025 NEXT K
1040 PRINT " -                                                      TIME qqqqqqqqqqqqqqqqqqqqqqq"
1041 CALL VCHAR(5,2,132,16)
1042 CALL VCHAR(5,31,132,16)
1048 FOR P=1 TO 2
1050 FOR K=4 TO 19 STEP 3
1060 S=INT(RND*3)*6+9
1070 CALL HCHAR(K,S+P,128+(P*8))
1071 CALL HCHAR(K+1,S+P,99+P)
1072 NEXT K
1074 NEXT P
1077 CALL SOUND(-1000,400,10,800,10,404,10)
1080 C1=0
1081 CYY=SK
1082 IF CYY<4 THEN 1084
1083 CYY=4
1084 FOR A=5 TO 20 STEP 3
1085 FOR S=1 TO CYY
1087 CALL HCHAR(A,S*6,97)
1088 CALL HCHAR(A,S*6+1,104,2)
1089 CALL HCHAR(A,S*6+3,98)
1090 NEXT S
1092 NEXT A
1093 CALL HCHAR(Y,X,135)
1094 FOR K=0 TO 30 STEP 2
1095 CALL SOUND(-50,500,K,1000,K,504,K)
1096 NEXT K
1100 CALL KEY(3,K,S)
1110 CC=CC+1
1111 TI=TI-TX
1112 IF INT(TI)/10<>TI/10 THEN 1120
1113 CALL HCHAR(23,8+INT(TI/10),132)
1114 IF TI<1 THEN 10000
1120 IF CC<9 THEN 1140
1130 CC=1
1140 CALL CHAR(104,C$(CC))
1150 C1=C1+1
1160 IF C1<2 THEN 1190
1170 C1=0
1190 IF K<>83 THEN 1200
1191 IF X1=-1 THEN 1250
1192 CX=130
1194 X1=-1
1196 C1=0
1198 GOTO 1255
1200 IF K<>68 THEN 1250
1201 IF X1=1 THEN 1250
1210 CX=128
1220 X1=1
1230 C1=0
1240 GOTO 1255
1250 IF K=32 THEN 3000
1255 IF C1=1 THEN 1270
1256 X=X+X1
1260 CALL HCHAR(Y,X-X1,32)
1270 CALL HCHAR(Y,X,CX+C1)
1280 CALL GCHAR(Y+1,X,K)
1290 IF K<100 THEN 1100
1300 IF K<>112 THEN 1400
1302 FOR K=Y TO Y+2
1304 CALL HCHAR(K,X,32)
1306 CALL HCHAR(K+1,X,133)
1308 NEXT K
1309 Y=Y+3
1310 REM  schermo successivo 
1311 IF Y<20 THEN 1100
1320 SC=SC+100
1321 CALL HCHAR(Y-1,X,45)
1322 CALL HCHAR(Y,X,32)
1330 FOR S=400 TO 550 STEP 50
1340 FOR K=20 TO 0 STEP-6
1350 CALL SOUND(-50,S,K,(S*4)-K*4,K,S-K,K)
1360 NEXT K
1370 NEXT S
1380 GOTO 1600
1400 IF K<>104 THEN 1450
1401 IF CC<8 THEN 1100 ELSE 1500
1450 IF K=132 THEN 1500
1460 REM  frutto 
1465 IF K=101 THEN 1492
1468 SC=SC+10
1470 CALL HCHAR(Y,X,135)
1471 CALL SOUND(-200,220,0,880,0,1220,0)
1475 A$=STR$(SC)
1476 K=1
1477 S=30-LEN(A$)
1478 GOSUB 8000
1479 CALL HCHAR(Y+1,X,96)
1485 CALL SOUND(-200,440,0,880,0,1760,0)
1487 CALL SOUND(-200,880,0,1760,0,3520,0)
1490 GOTO 1100
1492 A$="GAME  OVER"
1493 CALL SOUND(-200,110,3,112,3,224,3)
1494 GOTO 10002
1500 FOR K=Y TO 20
1505 CALL HCHAR(K,X,32)
1510 CALL HCHAR(K+1,X,133)
1520 NEXT K
1525 CALL HCHAR(21,X,134)
1526 A$="GAME  OVER"
1527 CALL SOUND(-200,-7,3)
1530 GOTO 10005
1590 REM  SECONDO SCHERMO 
1600 CALL CLEAR
1601 CALL COLOR(16,CO(CY),2)
1610 PRINT "ROOM 00  xyz{|x  SCORE 00000                            "
1620 A$=STR$(SK)
1630 K=22
1640 S=9-LEN(A$)
1650 GOSUB 8000
1660 A$=STR$(SC)
1670 K=22
1680 S=30-LEN(A$)
1690 GOSUB 8000
1695 PRINT "     BARS ggggggggggggg                                 "
1700 FOR K=1 TO 16
1710 PRINT
1720 NEXT K
1740 PRINT :"         NEXT  ROOM         "
1750 CALL HCHAR(6,8,152)
1760 CALL HCHAR(6,9,153,16)
1770 CALL HCHAR(6,25,154)
1780 CALL VCHAR(7,25,155,15)
1790 CALL HCHAR(21,25,157)
1800 CALL HCHAR(21,9,153,16)
1810 CALL HCHAR(21,8,156)
1820 CALL VCHAR(7,8,155,14)
1900 X=16
1910 Y=20
1920 F=INT(RND*16)+9
1925 IF(F>14)*(F<19)THEN 1920
1928 CALL HCHAR(20,F,136)
1940 REM  genera trave 
1945 BB=8
1950 A=7
1953 BB=BB-1
1955 CALL HCHAR(4,12+BB*2,32,2)
1957 IF BB=0 THEN 2800
1960 L=INT(RND*(12-CYY))+9
1970 CALL HCHAR(A,L,103,5+CYY)
2000 CALL KEY(3,K,S)
2010 C1=C1+1
2020 IF C1<2 THEN 2040
2030 C1=0
2040 IF K<>83 THEN 2100
2050 IF X1=-1 THEN 2150
2060 CX=130
2070 X1=-1
2080 C1=0
2090 GOTO 2150
2100 IF K<>68 THEN 2150
2110 IF X1=1 THEN 2150
2120 CX=128
2130 X1=1
2140 C1=0
2150 IF C1=1 THEN 2170
2160 X=X+X1
2165 CALL GCHAR(Y,X,K)
2166 IF K<>32 THEN 2500
2170 CALL HCHAR(Y,X-X1,32)
2180 CALL HCHAR(Y,X,CX+C1)
2200 A=A+1
2203 IF A<21 THEN 2210
2204 CALL HCHAR(A-1,L,103,5+CYY)
2205 CALL SOUND(-50,-2,3)
2206 IF(X>=L)*(X<=(L+4+CYY))THEN 1492
2207 CALL HCHAR(A-1,L,32,5+CYY)
2208 CALL HCHAR(20,F,136)
2209 GOTO 1950
2210 CALL HCHAR(A-1,9,32,16)
2220 CALL HCHAR(A,L,103,5+CYY)
2300 GOTO 2000
2500 REM  controlla 
2510 IF K=136 THEN 4000
2600 X=X-X1
2605 X1=0
2610 GOTO 2170
2800 REM  ok schermo 
2810 CALL HCHAR(20,X,135)
2820 CALL HCHAR(21,9,32)
2830 CALL HCHAR(22,9,45)
2840 A=0
2850 B=1
2860 A=A+1
2865 IF A<5 THEN 2880
2870 A=1
2875 B=B+1
2880 FOR L=2 TO 23 STEP 3
2885 IF B=1 THEN 2905
2887 IF B=2 THEN 2915
2890 CALL SOUND(-150,SO(A),10,INT(SO(A)*2.02),30-L,SM((L+1)/3),L+6)
2900 GOTO 2910
2905 CALL SOUND(-150,SO(A),10,INT(SO(A)*2.02),30-L,SO(A)*2,L+6)
2910 NEXT L
2912 GOTO 2860
2915 FOR K=X TO 9 STEP-1
2920 CALL HCHAR(20,K,131)
2925 CALL SOUND(10,-8,0)
2930 CALL HCHAR(20,K,32)
2935 NEXT K
2940 CALL HCHAR(21,9,133)
2945 CALL SOUND(20,-1,0)
2990 GOTO 790
3000 REM  SPARO 
3001 IF X1=-1 THEN 3004
3002 K=40
3003 GOTO 3018
3004 K=41
3018 CALL HCHAR(Y,X,K)
3019 CALL SOUND(-500,-6,5)
3020 FOR K=X+X1 TO X+(X1*4)STEP X1
3030 IF(K<3)+(K>30)THEN 3085
3040 CALL HCHAR(Y,K,42)
3050 CALL GCHAR(Y+1,K,S)
3060 IF(S<>101)*(S<>100)THEN 3080
3070 CALL HCHAR(Y+1,K,96)
3071 CALL HCHAR(Y,K,44)
3075 CALL SOUND(-200,-7,3)
3076 CALL HCHAR(Y,K,32)
3078 K=X+(X1*5)
3079 GOTO 3085
3080 CALL HCHAR(Y,K,32)
3085 REM   ciclo  
3090 NEXT K
3100 CALL HCHAR(Y,X,CX+C1)
3500 GOTO 1255
3999 REM  frutto 
4000 F=INT(RND*16)+9
4010 IF F=X THEN 4000
4015 IF F=X-X1 THEN 4000
4020 SC=SC+10
4030 CALL HCHAR(Y,X-X1,32)
4035 CALL HCHAR(Y,X,135)
4040 CALL SOUND(-200,220,0,880,0,1220,0)
4050 A$=STR$(SC)
4060 K=2
4070 S=30-LEN(A$)
4080 GOSUB 8000
4090 CALL HCHAR(20,F,136)
4100 CALL SOUND(-200,440,0,880,0,1760,0)
4110 CALL SOUND(-200,880,0,1760,0,3520,0)
4120 GOTO 2200
8000 FOR C=1 TO LEN(A$)
8010 CALL HCHAR(K,S+C,ASC(SEG$(A$,C,1)))
8020 NEXT C
8030 RETURN
9000 DATA 96,FF000000000000FF,97,FF010101010101FF,98,FF808080808080FF,104,FFFFFFFF00000000
9010 DATA 112,7C447C447C447C44,128,30203074B830C804,129,060406060F060509,131,60206060F060A090
9020 DATA 130,0C040C2E1D0C1320,132,0000000000000000,99,FF818181818181FF,112,0000000000000000
9030 DATA 113,FFFFFFFFFFFFFFFF,120,1F1F383E7E70FCFC,121,0F1F38381C0EFEFC,122,0F1F38307060FCFC
9040 DATA 123,1C1C3C3C7C6CECCC,124,1F1B3F3E7070E0E0,133,18525A3C18182424,134,10107C101010387C
9050 DATA 136,00183C6E5E7E3C18,144,7CFE92FE6C7C5400,125,000010307E301000,126,0000080C7E0C0800
9060 DATA 40,3020333E30302030,41,0C04CC7C0C0C040C,42,0000AA0000000000,43,3C4299A1A199423C
9070 DATA 100,FF000000000000FF,101,FF000000000000FF,44,8118244242241881,45,18181818187E3C18
9080 DATA 33,1F1F383E7E70FCFC,34,0F1F38381C0EFEFC,35,0F1F38307060FCFC,36,1C1C3C3C7C6CECCC,37,1F1B3F3E7070E0E0
9100 DATA 152,007F404040404342,153,00FF00000000FF00,154,00FE02020202C242,155,4242424242424242
9110 DATA 156,4243404040407F00,157,42C202020202FE00
9500 DATA 135,180A1A3C5818183C,103,FF000000000000FF,0,0
9600 DATA 1,15,2,2,16,2,3,15,2,4,15,2,5,15,2,6,15,2,7,15,2,8,15,2,9,2,8
9610 DATA 10,15,2,11,15,2,12,14,2,13,16,2,14,8,2,15,15,2,16,8,2
9990 DATA 0,0,0
10000 REM  game over 
10001 A$="TIME  OVER"
10002 CALL HCHAR(Y,X,134)
10005 FOR K=10 TO 12
10006 CALL HCHAR(K,11,32,12)
10007 NEXT K
10010 K=11
10012 S=11
10013 GOSUB 8000
10020 FOR S=500 TO 375 STEP-25
10030 FOR K=0 TO 25 STEP 7
10040 CALL SOUND(-50,S,K,(S*4)-K*4,K,S-K,K)
10050 NEXT K
10060 NEXT S
10070 FOR K=1 TO 200
10080 NEXT K
10100 GOTO 600
